"""
    登录业务层实现
"""
import json
import os
import unittest
from parameterized import parameterized
from api.apiLoginAgentSite import ApiLoginAgentSite
from config import conf
from config.conf import ConfigYaml
from tools.log import LogPrint
from tools.readJson import ReadJson


# 定义一个函数用于读取json中的测试数据
def get_data():
    data = ReadJson("login.json").read_json()
    #    新建一个空列表，用于添加读取json数据
    arrs = []
    # append()方法里再加一个()，将获取到的参数以元组的形式添加进列表中，达到列表嵌套元组的效果
    # 使用for循环和字典的value()方法来遍历并获取所有的key所对应的值
    arrs.append((ConfigYaml().get_conf_url() + data.get("url"),
                 data.get("headers"),
                 data.get("account"),
                 data.get("password")))
    # 打个日志输出
    LogPrint().logsinfo(arrs)
    return arrs


class TestLoginAgentSite(unittest.TestCase):
    @parameterized.expand(get_data())
    def test_login(self, url, headers, account, password):
        s = ApiLoginAgentSite().api_post_login(url, headers, account, password)
        print(s.json())
        # 断言响应信息
        self.assertEqual('请求成功', s.json()['msg'])
        # 打个日志
        LogPrint().logsinfo(s.json())
        # 此处可将登陆后的响应信息保存到json文件中，其中包括token，用于后续接口关联
        BASE_DIR = conf.get_data_path()
        with open(BASE_DIR + os.sep + "token.json", "w", encoding="utf-8") as f:
            json.dump(s.json()['data'], f, indent=4, ensure_ascii=False)


if __name__ == '__main__':
    unittest.main()
